# 自定义自响应控件(UI 交互层)
自响应控件可以响应表单的操作状态和权限状态。 目前祺佑三层开发框架定义了三种操作状态,九种权限状态。 每个自响应控件必须实现如下10个属性,以及UpdateState 方法和SetState方法
属性 | 取值 | 说明 |
---|---|---|
OpCode | 0 浏览(默认值) 1 新增 2 修改 | 控件的操作状态 |
isAdd | 逻辑型 .T.(默认),.F. | 新增权限 |
isEdit | 逻辑型 .T.(默认),.F. | 编辑权限 |
isDel | 逻辑型 .T.(默认),.F. | 删除权限 |
isCheck | 逻辑型 .T.(默认),.F. | 审核权限 |
isKeep | 逻辑型 .T.(默认),.F. | 记账权限 |
isPrint | 逻辑型 .T.(默认),.F. | 打印权限 |
isUd1 | 逻辑型 .T.(默认),.F. | 自定权限1 |
isUd2 | 逻辑型 .T.(默认),.F. | 自定权限2 |
isUd3 | 逻辑型 .T.(默认),.F. | 自定权限3 |
那如何定义自响应控件呢? 首先选择你的制作的自定义控件,添加上表格中的10个属性,设置好默认值. 1、init事件添加如下代码
&&向主表单注册自身 Thisform.registerObserver(This)
1
2、添加一个自定义方法,方法名:UpdateState
Lparameters isadd,isedit,isdel,opcode,ischeck,isprint,iskeep,isud1,isud2,isud3
This.Isadd=isadd
This.Isedit=isedit
This.Isdel=isdel
This.Opcode=opcode
This.Ischeck=ischeck
This.Isprint=isprint
This.Iskeep=iskeep
This.Isud1=isud1
This.Isud2=isud2
This.Isud3=isud3
This.SetState()
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
3、添加自定义方法:方法名:SetState
If Inlist(This.Opcode,0)
This.Enabled=.F.
Else
This.Enabled=.T.
Endif
1
2
3
4
5
2
3
4
5
根据操作状态、权限状态来实现动当前控件的开闭,显示隐藏,只读或编辑。 例子 Textbox 控件的SetState 实现了按操作状态属性,浏览状态控件不可编辑,新增和编辑控件可以编辑。
If Inlist(This.Opcode,0)
This.Enabled=.F.
Else
This.Enabled=.T.
Endif
1
2
3
4
5
2
3
4
5
这样就把一个自响应控件制作成功了.